package com.cmz.common.api.dto;

import com.cmz.common.api.enums.StandardSubscriberParam;

import java.io.Serializable;
import java.util.Map;
import java.util.Set;

/**
 * 标准用户信息接口
 * @author cmz
 */
public interface StandardSubscriber extends Serializable {

    /**
     * 取得用户ID
     * @return 用户ID
     */
    String getSid();

    /**
     * 获取用户名（唯一，非昵称）
     * @return 用户名
     */
    String getUsername();

    /**
     * 用户来源：LDAP、DB等
     * @return 用户来源
     */
    String getSource();

    /**
     * 获取用户参数（全量）
     * @return 用户参数
     */
    Map<String, Object> getParams();

    /**
     * 获取用户参数
     * @param subscriberParam 用户参数定义
     * @return 用户参数值
     */
    Object getParam(StandardSubscriberParam subscriberParam);

    /**
     * 获取用户权限（全量）
     * @return 用户权限
     */
    Set<String> getPerms();

}
